home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / pc / LOGIC Apple II 5.25" Library - DOS Part 7 / DOS204B.dsk / CM.bas < prev    next >
BASIC Source File  |  2012-02-16  |  18KB  |  263 lines

  1. 900  REM  <CTRL-N>CM - CREATE YOUR OWN PROBLEMS
  2. 901  REM  <CTRL-N>COPYRIGHT 1983 BY THE 22ND AVENUE WORDSHOP
  3. 905 CS = 62450: POKE 230,32: CALL CS: POKE 49234,0: POKE 49239,0: POKE 49232,0:KSTROBE = 49152:KCLICK = 49200: POKE 33,40
  4. 910 D$ =  CHR$(4):RF$ = D$ +"READ":LF$ = D$ +"BLOAD":WF$ = D$ +"WRITE":CF$ = D$ +"CLOSE":SETF = 816:OF$ = D$ +"OPEN"
  5. 912 DS = 43602:KB = 49168: ONERR  GOTO 19010
  6. 915  HOME : VTAB 12: PRINT "     Just a moment ..."
  7. 920 UNSC = 4096:SK = 4176:INSTR = 3920
  8. 940 ACCEPT = 768
  9. 950  CALL SETF
  10. 952 F1 = 25:F3 = 28:I1 = 35:I3 = 38: DIM BR%(127),PI$(127)
  11. 953  PRINT LF$"BRANCH.S,A$4000":PI$(0) = "1":DICT = 3584: CALL DICT FOR BR%(1),PI$(0):BR%(0) = 13: ONERR  GOTO 970
  12. 955 PF$ = "PROB4": PRINT OF$PF$", L208": PRINT RF$PF$", R0": INPUT PC: IF PC  THEN  FOR P = 1 TO PC: CALL ACCEPT FOR PI$(P): NEXT 
  13. 960  GOTO 1000
  14. 970  PRINT WF$PF$", R0": PRINT 0:PC = 0: PRINT CF$: GOTO 955
  15. 1000 QT$ =  CHR$(34):BL = 3503: ONERR  GOTO 19010
  16. 1020  DIM HP$(5,1): FOR L = 0 TO 5: READ HP$(L,0): READ HP$(L,1): NEXT 
  17. 1030  DIM OK(6),AD(5),VT(5): FOR OP = 1 TO 5: READ AD(OP): NEXT : FOR OP = 1 TO 5: READ VT(OP): NEXT 
  18. 1040 BASL = 40:CG = 22:UL = 3128:UC = 0:LC = 32:ES = 64578:SG =  PEEK(64435): IF SG = 6  THEN LC = 0:CP = 1
  19. 1070  DIM CC$(40),C$(40),SY%(40),WS(1),WI$(1),WD(1),WC(1),M$(30),ML%(30):ACCEPT = 768
  20. 1080  PRINT LF$"CM.MESS.S, A$1100":M$(0) = "P": CALL DICT FOR ML%(1),M$(0)
  21. 1120 SP$ = "                        ": DIM CL(6): FOR C = 1 TO 6: READ CL(C): NEXT 
  22. 1130  GOTO 10010
  23. 1200  CALL SETF: POKE 32,0: POKE 33,40: IF HF$ < >"CREATE.S"  THEN HF$ = "CREATE.S": POKE DS,0: PRINT LF$;HF$
  24. 1210  HOME : CALL CS: PRINT : CALL UNSC
  25. 1290  VTAB 23: HTAB 35:CL = 1: GOSUB 1810
  26. 1300  ON (A$ = "3"  OR BR = 6) GOTO 32000
  27. 1310  ON (BR < >3) GOTO 1320:MENU =  VAL(A$): ON MENU GOTO 10010,1330
  28. 1320  CALL BL: GOTO 1290
  29. 1330 HF$ = "PLAY.S": POKE DS,0: PRINT LF$;HF$: CALL UNSC: VTAB 23: HTAB 35:CL = 1: GOSUB 1810
  30. 1340  ON (BR = 6) GOTO 32000: IF BR < >3  THEN  CALL BL: GOTO 1330
  31. 1350 OP =  VAL(A$): IF OP >4  THEN  CALL BL: GOTO 1330
  32. 1360  ON (OP = 4) GOTO 20010: HOME :M = 20: GOSUB 15810: GOSUB 15010: POKE KB,0: ONERR  GOTO 1400
  33. 1370  POKE 952,OP +10: POKE DS,0: HOME : PRINT D$"RUN HP"
  34. 1400  HOME : PRINT :M = 21: GOSUB 15810: GOSUB 15010: POKE KB,0: GOTO 1200
  35. 1810 A$ = ""
  36. 1820 P =  LEN(A$) +1: IF P >1  THEN  PRINT A$;
  37. 1830  ON (P >CL) GOTO 1910: POKE UL,CASE
  38. 1835  GET C$: ON ( LEN(C$) = 0) GOTO 1850:BR = BR%( ASC(C$))
  39. 1840  ON BR GOTO 1860,1860,1860,1860,1860,1910,1910,1850,1880,1850,1850,1910
  40. 1850  CALL BL: GOTO 1830
  41. 1860  IF CL >1  THEN  PRINT C$;
  42. 1870 A$ = A$ +C$:P = P +1: GOTO 1830
  43. 1880  ON (P = 1) GOTO 1910:P = P -1:A$ =  MID$ (A$,1,P -1): PRINT C$" "C$;: IF P >LL GOTO 1830
  44. 1910 CASE = LC: POKE UL +2,255: RETURN 
  45. 2010  HOME : CALL SETF: FOR L = 1 TO 5: POKE AD(L),F3 +7 *(OK(L) = 1): NEXT : GOSUB 17115
  46. 2015 OP = 1: FOR W = 0 TO 1:W$(W) = CW$(W): NEXT :VT = 1:HT = 2: GOSUB 14010
  47. 2020  GOSUB 16010
  48. 2030  VTAB 5: HTAB 1: PRINT "3 DEFINITION: "; LEFT$(DF$,26): VTAB 6: HTAB 4: PRINT  MID$ (DF$,27,37)
  49. 2035  VTAB 7: HTAB 4: PRINT  MID$ (DF$,64)
  50. 2040  VTAB 9: HTAB 1: PRINT "4 HINT: ";: ON ( LEN(HI$) = 0) GOTO 2045
  51. 2042  PRINT  LEFT$(HI$,32): VTAB 10: HTAB 4: PRINT  MID$ (HI$,33): GOTO 2050
  52. 2045  PRINT "(optional)"
  53. 2050  ON (BOX = OK(5)) GOTO 2060: IF OK(5) = 2  THEN  GOSUB 13910: RETURN 
  54. 2055 M = 10: GOSUB 15810:M = 15: GOSUB 15830:CG = 13:BOX = 1
  55. 2060  IF BOX = 1  AND MP <3  THEN CG = 13:M = 3: GOSUB 15810: IF WD(0) +WD(1) = 0  THEN M = 23: GOSUB 15830
  56. 2070  RETURN 
  57. 10010  POKE 32,0: POKE 33,40
  58. 10020  IF PC >60  THEN M = 22: GOSUB 15810: GOSUB 15010: POKE KB,0: GOTO 32000
  59. 10060  FOR W = 0 TO 1:CW$(W) = "":FW$(W) = "":WI$(W) = "":SE(W) = 0:WD(W) = 0:HP(W) = 0: NEXT :HI$ = "":DF$ = ""
  60. 10070 OK(1) = 1: FOR F = 2 TO 6:OK(F) = 0: NEXT :BOX = 1: GOSUB 2010:WM = 0:MP = MP +1:WC = 0
  61. 10080 CASE = LC
  62. 10090 DOK = 0:HOK = 1: GOTO 10120
  63. 10110  CALL 54915: CALL SETF: GOSUB 16310: FOR L = 1 TO 5: POKE AD(L),F3 +7 *(OK(L) = 1): NEXT : GOSUB 17115: GOSUB 2050: GOTO 10120
  64. 10115  GOSUB 2010
  65. 10120  VTAB 24: HTAB 1: PRINT "CHOOSE:  ";: GOSUB 17010: PRINT "Help";: IF OK(6)  THEN  PRINT "  ";: GOSUB 17010: PRINT "Save";
  66. 10130  FOR L = 1 TO 4: ON (OK(L) < >1) GOTO 10160: IF OK(L +1) < >1  AND OK(5) < >1  THEN  PRINT " or";
  67. 10140  PRINT "  ";: GOSUB 17010: PRINT L;
  68. 10160  NEXT L: IF OK(5) = 1  THEN  PRINT " or ";: GOSUB 17010: PRINT "5";
  69. 10170  PRINT "  ";: IF  LEFT$(HF$,2) < >"NS"  THEN TS = TS +(TS <1):HF$ = "NS" + STR$(TS) +".S": POKE DS,0: PRINT LF$;HF$", A$4000"
  70. 10180 HT =  PEEK(36) +1: PRINT  TAB( 39);: HTAB HT
  71. 10200 CL = 1: GOSUB 1810: ON BR GOTO 11210,10210,10220,10230,10210,1200,10010
  72. 10210  CALL BL: GOTO 10200
  73. 10220 OP =  VAL(A$): ON (OP = 0  OR OP >5) GOTO 10210: ON (OK(OP) = 0) GOTO 10210: IF OK(5) = 2  THEN OK(5) = 1
  74. 10223  IF BOX = 3  AND MP <4  THEN CG = 13:M = 10: GOSUB 15810
  75. 10225  ON OP GOTO 10710,10810,10910,11010,10240
  76. 10230  ON (A$ = "h") GOTO 11210: ON (OK(6)  AND A$ = "s") GOTO 11810: GOTO 10210
  77. 10240 OK(5) = 2: GOTO 11110
  78. 10710 OP = 1:VT = 1:HT = 2: FOR W = 0 TO 1:W$(W) = CW$(W): NEXT :CASE = LC:WW = ( LEN(CW$(0)) >0  AND  LEN(W$(1)) = 0)
  79. 10720  GOSUB 17110: GOSUB 17210: GOSUB 14090: ON BR GOTO 11250,10730,10730,10730,10730,1200,10010,10730,10730,10730,10730,10740
  80. 10730  CALL BL: GOTO 10710
  81. 10740 X = 0: FOR W = 0 TO 1: ON (CW$(W) = W$(W)) GOTO 10750:WS(W) = 0:WC(W) = 0:WD(W) = 0:WI$(W) = "":X = 1
  82. 10745 CW$(W) = W$(W): IF OK(5) = 0  THEN OK(5) = 1
  83. 10750  NEXT : GOSUB 16110: GOSUB 16210: IF X = 0 GOTO 10110
  84. 10760  ON ( LEN(CW$(0)) >0  AND  LEN(CW$(1)) >0) GOTO 11110:WM = 0: GOSUB 13510: IF WM = 0  THEN OK(5) = 1
  85. 10770  GOTO 10110
  86. 10810 OP = 2:VT = 3:HT = 12:W$(0) = FW$(0):W$(1) = FW$(1):CASE = UC: GOSUB 17110
  87. 10815 WW = (SE(0) >0): GOSUB 17210: POKE UL +2,223
  88. 10820  GOSUB 14090: ON BR GOTO 11250,10830,10830,10830,10830,1200,10010,10830,10830,10830,10830,10840
  89. 10830  CALL BL: GOTO 10810
  90. 10840  IF  LEN(W$(0)) = 0  AND  LEN(W$(1)) = 0 GOTO 10110
  91. 10845  IF  LEN(W$(0)) = 0  OR  LEN(W$(1)) = 0  THEN M = 1: GOSUB 15810: GOSUB 17210: GOTO 10815
  92. 10850  FOR W = 0 TO 1: FOR L = 1 TO 5: IF HP$(L,W) = W$(W)  THEN SE(W) = L:L = 5: NEXT L: GOTO 10865
  93. 10860  NEXT L:M = 2: GOSUB 15810:W$(W) = "": GOSUB 17210: POKE UL +2,223: GOTO 10815
  94. 10865  NEXT W: FOR W = 0 TO 1: ON (WS(W) = SE(W)) GOTO 10880: IF WD(W) = 10  THEN WS(W) = SE(W): GOTO 10880
  95. 10870 W$ = CW$(W): IF  ASC(W$) >91  THEN W$ =  CHR$( ASC(W$) -32) + MID$ (W$,2)
  96. 10871 M$ = QT$ +W$ +QT$ +" has " + STR$(WS(W)) +" syllable" + RIGHT$("s.",1 +(WS(W) >1)): IF M < >10  THEN M = 10: GOSUB 15810
  97. 10872  VTAB 16 +3 *W: HTAB 19 - LEN(M$)/2: PRINT M$
  98. 10875 M$ = "It should be a " +HP$(WS(W),W) +".": HTAB 19 - LEN(M$)/2: PRINT M$:SE(W) = 0: IF CG >15  THEN CG = 15
  99. 10880 HP(W) = WS(W): NEXT W: IF SE(0) = 0  OR SE(1) = 0 GOTO 10815
  100. 10885 OK(3) = 1: FOR W = 0 TO 1:FW$(W) = W$(W): NEXT 
  101. 10890  GOSUB 16010: GOTO 10110
  102. 10910 A$ = DF$:OK(6) = 0: FOR ST = 1 TO 2: ON (CL(ST) > LEN(A$)) GOTO 10915: NEXT 
  103. 10915  GOSUB 17110: GOSUB 17210: POKE 32,3: POKE 33,37: FOR L = ST TO 3
  104. 10920  VTAB 5: HTAB 12
  105. 10930 CL = CL(L):LL = CL(L -1): GOSUB 1820: ON BR GOTO 10930,10970,10940,10940,10940,1200,10010,10935,10955,10935,10935,10980
  106. 10935  CALL BL: GOTO 10930
  107. 10940  IF L = 3  THEN A$ =  LEFT$(A$,P -2): CALL BL: GOTO 10920
  108. 10945  FOR SP = P -1 TO P -17  STEP  -1: IF  MID$ (A$,SP,1) = " " GOTO 10960
  109. 10950  NEXT :A$ =  LEFT$(A$,P -3) +"- " + RIGHT$(A$,2): GOTO 10970
  110. 10955  ON (L <2) GOTO 10935:L = L -1: GOTO 10920
  111. 10960 A$ =  LEFT$(A$,SP) + LEFT$(SP$,P -1 -SP) + RIGHT$(A$,P -1 -SP)
  112. 10970  NEXT L
  113. 10980 DF$ = A$: POKE 32,0: POKE 33,40: GOSUB 16110: GOTO 10110
  114. 11010 A$ = HI$:OK(6) = 0: FOR ST = 5 TO 5: ON (CL(ST) > LEN(A$)) GOTO 11015: NEXT 
  115. 11015  GOSUB 17110: GOSUB 17210: POKE 32,3: POKE 33,37: FOR L = ST TO 6
  116. 11020  VTAB 9: HTAB 6: IF  LEN(A$) = 0  THEN  PRINT SP$;: HTAB 6
  117. 11030 CL = CL(L):LL = CL(L -1): GOSUB 1820: ON BR GOTO 11030,11070,11040,11040,11040,1200,10010,11035,11055,11035,11035,11080
  118. 11035  CALL BL: GOTO 11030
  119. 11040  IF L = 6  THEN A$ =  LEFT$(A$,P -2): CALL BL: GOTO 11020
  120. 11045  FOR SP = P -1 TO P -17  STEP  -1: IF  MID$ (A$,SP,1) = " " GOTO 11060
  121. 11050  NEXT :A$ =  LEFT$(A$,P -3) +"- " + RIGHT$(A$,2): GOTO 11070
  122. 11055  ON (L <6) GOTO 11035:L = L -1: GOTO 11020
  123. 11060 A$ =  LEFT$(A$,SP) + LEFT$(SP$,P -1 -SP) + RIGHT$(A$,P -1 -SP)
  124. 11070  NEXT L
  125. 11080 HI$ = A$: POKE 32,0: POKE 33,40: GOSUB 16210: GOTO 10110
  126. 11110  VTAB 18: CALL SETF: FOR T = 1 TO 9: ON (T = 1) GOTO 11120:TS = TS +1: IF TS = 10  THEN TS = 1
  127. 11111  IF T = 2  THEN M = 5: GOSUB 15810
  128. 11112  IF  PEEK(KS) = 155  THEN  POKE KB,0:OK(5) = 1: GOTO 10110
  129. 11115 HF$ = "NS" + STR$(TS) +".S": POKE DS,0: PRINT LF$;HF$", A$4000": PRINT ".";
  130. 11120  GOSUB 13510: IF ( LEN(CW$(0)) >0  AND WD(0) = 0)  OR ( LEN(CW$(1)) >0  AND WD(1) = 0)  THEN  NEXT T
  131. 11125  FOR W = 0 TO 1: ON ( LEN(CW$(W)) = 0) GOTO 11145: ON (WD(W) >0) GOTO 11145
  132. 11127 M = 10: GOSUB 15810:M$ = CW$(W): IF  ASC(M$) >91  THEN M$ =  CHR$( ASC(M$) -32) + MID$ (M$,2)
  133. 11128 M$ = QT$ +M$ +M$(8): HTAB 21 - LEN(M$)/2: VTAB 17: PRINT M$:M = 9: POKE 2656,I3: POKE 2660,I3: GOSUB 15830
  134. 11130 CL = 1: GOSUB 1810: ON BR GOTO 11135,11135,11135,11140,11135,1200
  135. 11135  CALL BL: GOTO 11127
  136. 11140  CALL SETF:M = 10: GOSUB 15810: IF A$ = "N"  OR A$ = "n"  THEN CW$(W) = "":WI$(W) = "":WC = WC *(WD(1 -W) >0): GOTO 11145
  137. 11142  ON (A$ < >"y"  AND A$ < >"Y") GOTO 11135:WD(W) = 10
  138. 11145  NEXT W: IF WD(0) = 10  AND WD(1) = 10  THEN  ON (WC(0) >0  AND WC(1) >0) GOTO 11170:WC = 2: FOR W = 0 TO 1:CC$(W +1) = "*" +CW$(W):WC(W) = 1: NEXT : GOTO 11170
  139. 11147  ON (WD(0) = 10  OR WD(1) = 10) GOTO 11160: ON (WD(0) = 0  OR WD(1) = 0) GOTO 11170: IF WI$(0) = WI$(1) GOTO 11170
  140. 11150 M = 6: GOSUB 15810:OK(2) = 0: GOTO 10710
  141. 11160 W = (WD(1) = 10): IF WC(W) = 0  THEN R = WC +1 -(WC = 33):R = R -(CC$(R) = CW$(1 -W)):CC$(R) = "*" +CW$(W):WC = R:WC(W) = R
  142. 11170 OK(2) = (WD(0) >0  AND WD(1) >0): GOTO 10110
  143. 11210  CALL SETF: FOR LI = 1 TO 5: POKE AD(LI),I1: NEXT 
  144. 11220 M = 10: GOSUB 15810:HF$ = "HELP0.S": POKE DS,0: PRINT LF$;HF$: POKE SK,8: CALL UNSC
  145. 11230  GOSUB 15010:CL = 1: GOSUB 1810: ON (BR = 6) GOTO 1200: ON (BR = 3) GOTO 11250: IF BR < >2  AND BR < >3  THEN  CALL BL
  146. 11240  GOTO 10115
  147. 11250  CALL SETF:A =  VAL(A$): IF A >5  THEN  CALL BL: GOTO 11220
  148. 11260 HF$ = "HELP" +A$ +".S"
  149. 11270  POKE DS,0: POKE SK,8: PRINT LF$;HF$:M = 10: GOSUB 15810: CALL UNSC: FOR AD = 3037 TO 3045: POKE AD,I1: NEXT :M = 14: GOSUB 15830
  150. 11280  FOR SC = 1 TO 60: VTAB VT(A): HTAB 1: POKE AD(A),I3: PRINT A;
  151. 11290  FOR ST = 1 TO 30:RS = ( PEEK(KS) >127): IF RS GOTO 11350
  152. 11300  NEXT : HTAB 1: POKE AD(A),F3: PRINT A;: FOR ST = 1 TO 30:RS = ( PEEK(KS) >127): IF RS GOTO 11350
  153. 11310  NEXT : NEXT SC: CALL BL: GOTO 11280
  154. 11350  POKE KB,0: IF HF$ = "HELP2.S"  THEN HF$ = "HELP21.S": GOTO 11270
  155. 11360  GOTO 10115
  156. 11810  CALL SETF:A$ = "":M = 11
  157. 11815  GOSUB 15810:CL = 6:CASE = UC: POKE UL +2,223: GOSUB 1820
  158. 11820  ON BR GOTO 11830,11830,11825,11825,11825,1200,10010,11825,11810,11825,11825,11830
  159. 11825 A$ =  MID$ (A$,1,5): CALL BL: GOTO 11815
  160. 11830 IN$ = A$: ON ED GOTO 12610:M = 12: POKE 2663,I3: POKE 2667,I3: GOSUB 15830
  161. 11835 CL = 1: GOSUB 1810: ON BR GOTO 11840,11840,11840,11845,11840,1200,10010
  162. 11840  CALL BL: GOTO 11835
  163. 11845  ON (A$ < >"Y"  AND A$ < >"y") GOTO 10110:M = 13: GOSUB 15830:PC = PC +1: POKE DS,0: PRINT OF$;PF$",L208": PRINT WF$PF$", R"PC
  164. 11855  PRINT CW$(0): PRINT CW$(1): PRINT HP(0): PRINT HP(1)
  165. 11860  FOR L = 1 TO 3:C = CL(L) -CL(L -1): PRINT  MID$ (DF$,CL(L -1) +1,C): NEXT 
  166. 11865  FOR L = 5 TO 6:C = CL(L) -CL(L -1): PRINT  MID$ (HI$,CL(L -1) +1,C): NEXT 
  167. 11870  PRINT WM:PI$(PC) = IN$
  168. 11880  POKE DS,0: PRINT WF$PF$", R0": PRINT PC: FOR P = 1 TO PC: PRINT PI$(P): NEXT : PRINT CF$
  169. 11890  GOTO 10010
  170. 13510  FOR W = 0 TO 1: ON (WD(W) >0  OR  LEN(CW$(W)) = 0) GOTO 13550
  171. 13520 C$(0) = CW$(W) + CHR$(13): CALL DICT FOR SY%(1),C$(0):L =  LEN(C$(0)): ON (L = 0) GOTO 13550:: IF L >33  THEN L = 33
  172. 13530 WC = L:WM = TS: FOR C = 1 TO WC:CC$(C) = C$(C) +"": IF C$(C) = CW$(W)  THEN WC(W) = C:WS(W) = SY%(C) -10
  173. 13535  NEXT C: IF WC(W) >0  THEN WD(W) = TS:WI$(W) = C$(1)
  174. 13550  NEXT W: RETURN 
  175. 13910  VTAB 12: HTAB 1: CALL ES: PRINT : ON (WC = 0) GOTO 13940:CG = 11
  176. 13915  HCOLOR= 2: HPLOT 0,83 TO 278,83 TO 278,180 TO 0,180 TO 0,83: HCOLOR= 3
  177. 13920 LP = WC/3 +2 *(WC <9): FOR W = 0 TO WC -1:C =  INT(W/LP) *13 +2:R = W - INT((W)/LP) *LP +12
  178. 13930  HTAB C: VTAB R: PRINT CC$(W +1);: NEXT 
  179. 13940 OK(5) = 2:BOX = 2: RETURN 
  180. 14010  IF OP < >2  THEN  VTAB 1: HTAB 3: PRINT "< "W$(0)"  > < "W$(1)"  >"SP$:PR = 5 + LEN(W$(0)) +(WW = 1) *(6 + LEN(W$(1))): RETURN 
  181. 14020  VTAB 3: HTAB 12: PRINT W$(0)" "W$(1)SP$:PR = 12 + LEN(W$(0)) +(WW = 1) *(1 + LEN(W$(1))): RETURN 
  182. 14030  ON (OP = 2) GOTO 14060: PRINT C$"  >";: IF WW = 1  THEN  PRINT  TAB( 39);: GOTO 14100
  183. 14040  PRINT " < "W$(1)"  >" TAB( 39);: GOTO 14100
  184. 14060  PRINT C$" ";: IF WW = 0  THEN  PRINT W$(1);
  185. 14070  PRINT  TAB( 39);: GOTO 14100
  186. 14090  GOSUB 14010
  187. 14100  POKE UL,CASE: VTAB VT: HTAB PR: GET C$: ON ( LEN(C$) = 0) GOTO 14120
  188. 14115 BR = BR%( ASC(C$)): ON BR GOTO 14190,14140,14120,14130,14120,14190,14190,14120,14150,14140,14160,14190
  189. 14120  CALL BL: GOTO 14100
  190. 14130 L =  LEN(W$(WW)): ON (L >3 *(OP = 2) +12) GOTO 14120:W$(WW) = W$(WW) +C$:PR = PR +1: IF L <3  OR OP = 2  OR CP = 0 GOTO 14030
  191. 14132  FOR C = 1 TO 4: IF  ASC( MID$ (W$(WW),C,1)) >90  THEN C = 12:CP = 0: NEXT C: GOTO 14030
  192. 14134  NEXT C:M = 24: GOSUB 15810:W$(WW) = "": GOTO 14010
  193. 14140 WW = 1 -WW: GOTO 14090
  194. 14150  IF  LEN(W$(WW)) >0  THEN W$(WW) =  MID$ (W$(WW),1, LEN(W$(WW)) -1):PR = PR -1: GOTO 14030
  195. 14155  ON (WW = 0) GOTO 14120:WW = 0: GOTO 14090
  196. 14160 W$(WW) = "": GOTO 14090
  197. 14190  POKE UL +2,255: RETURN 
  198. 15010  ON ( PEEK(KS) >127) GOTO 15100
  199. 15020  FOR A = 3037 TO 3045: POKE A,I1: NEXT :M = 14: GOSUB 15830
  200. 15030  FOR W = 1 TO 3: GOSUB 21010: IF RS  THEN W = 3
  201. 15040  NEXT W:SD = 0: IF RS = 1 GOTO 15100
  202. 15050  VTAB 24: FOR ST = 1 TO 20: FOR A = 1 TO 9: HTAB 13 +A: POKE A +3036,F1:S$ =  MID$ ("SPACE BAR",A,1): PRINT S$;
  203. 15060  FOR W = 1 TO 14: IF  PEEK(KS) >127  THEN W = 14:RS = 1:A = 9:ST = 20
  204. 15070  NEXT W: POKE A +3036,I1: HTAB A +13: PRINT S$;
  205. 15080  NEXT A: IF RS = 0  AND SD >0  THEN  FOR W = 1 TO 2 *SD:X =  PEEK(KC): NEXT 
  206. 15085  IF  PEEK(KS) <128  THEN  FOR X = 1 TO 100: NEXT 
  207. 15090  NEXT ST: IF RS = 0  THEN SD = 1 -SD: GOTO 15050
  208. 15100  CALL SETF: RETURN 
  209. 15810  IF CG >ML%(M)  THEN CG = ML%(M)
  210. 15820  VTAB CG: HTAB 1: CALL ES:BOX = 3
  211. 15830  VTAB ML%(M): HTAB 1: PRINT M$(M);
  212. 15840  RETURN 
  213. 16010  VTAB 3: HTAB 1: PRINT "2 FORMULA: "FW$(0)" "FW$(1);: IF HP(0) >0  AND HP(1) >0  THEN  PRINT " ("HP(0)","HP(1)")     ": GOTO 16030
  214. 16020  PRINT  LEFT$(SP$,39 - PEEK(36));
  215. 16030  RETURN 
  216. 16110 DOK = 0:DF =  LEN(DF$): ON (DF <1) GOTO 16195: FOR W = 0 TO 1:CW =  LEN(CW$(W)): ON (CW <1) GOTO 16190:C% = 1
  217. 16120  CALL INSTR FOR DF$,CW$(W),C%: IF C% = 0 GOTO 16190
  218. 16130  IF C% >1  THEN  IF  ASC( MID$ (DF$,C% -1,1)) >64 GOTO 16180
  219. 16140  IF C% +CW < = DF  THEN  IF  ASC( MID$ (DF$,C% +CW,1)) >64 GOTO 16180
  220. 16170  POKE 32,0: POKE 33,40: CALL SETF:M = 16: GOSUB 15810: GOSUB 15010: POKE KB,0:OK(4) = ( LEN(HI$) >0): GOTO 10110
  221. 16180 C% = C% +CW: IF C% <DF -CW +2 GOTO 16120
  222. 16190  NEXT W
  223. 16195 DOK = (DF >0):OK(4) = DOK: RETURN 
  224. 16210 HOK = 0:HI =  LEN(HI$): ON (HI <1) GOTO 16295: FOR W = 0 TO 1:CW =  LEN(CW$(W)): ON (CW <1) GOTO 16290:C% = 1
  225. 16220  CALL INSTR FOR HI$,CW$(W),C%: IF C% = 0 GOTO 16290
  226. 16230  IF C% >1  THEN  IF  ASC( MID$ (HI$,C% -1,1)) >64 GOTO 16280
  227. 16240  IF C% +CW < = HI  THEN  IF  ASC( MID$ (HI$,C% +CW,1)) >64 GOTO 16280
  228. 16270  POKE 32,0: POKE 33,40: CALL SETF:M = 7: GOSUB 15810: GOSUB 15010: POKE KB,0: GOTO 10110
  229. 16280 C% = C% +CW: IF C% <HI -CW +2 GOTO 16220
  230. 16290  NEXT W
  231. 16295 HOK = 1: RETURN 
  232. 16310 OK(6) = 0: IF WD(0) = 0  OR WD(1) = 0  THEN OK(2) = 0: RETURN 
  233. 16320  FOR W = 0 TO 1: IF WS(W) < >HP(W)  THEN HP(W) = 0:FW$(W) = "":SE(W) = 0
  234. 16325  NEXT : IF HP(0) = 0  OR HP(1) = 0  THEN  GOSUB 16010: RETURN 
  235. 16330  IF OK(1) +OK(2) = 2  AND DOK +HOK = 2  THEN OK(6) = 1
  236. 16340  RETURN 
  237. 17010 HT =  PEEK(36) +1:AD =  PEEK(BA) +256 * PEEK(BA +1) +HT +1023
  238. 17020 F =  PEEK(AD):F = F +7: IF F >40  THEN F = F -14
  239. 17030  POKE AD,F: RETURN 
  240. 17110  POKE 34,22: CALL SETF
  241. 17115  FOR L = 1 TO 4: VTAB VT(L): HTAB 1: PRINT L;: NEXT : POKE 34,0: RETURN 
  242. 17210  FOR A = 3036 TO 3041: POKE A,I1: NEXT :M = 4: GOSUB 15830: PRINT "    ";: RETURN 
  243. 18100  DATA "    ","    ",HINK,PINK,HINKY,PINKY,HINKETY,PINKETY,HINKHINKETY,PINKPINKETY,HINKHINKHINKETY,PINKPINKPINKETY
  244. 18120  DATA 2048,2304,2560,2088,2472,1,3,5,9,12
  245. 18160  DATA 26,63,100,0,32,69
  246. 19010 EN =  PEEK(222):LN =  PEEK(218) +256 * PEEK(219)
  247. 19020  ON (EN = 6) GOTO 19040: ON (EN = 9) GOTO 19050: IF EN = 255  THEN  RESUME 
  248. 19030  HOME : VTAB 12: CALL BL: PRINT "ERROR "EN" at line "LN: INPUT "<CR> TO CONTINUE... ";A$: CALL SETF: GOTO 1200
  249. 19040  HOME : CALL 64484: VTAB 12: HTAB 1: PRINT "There's a file missing on this disk.": GOSUB 21010: RUN 
  250. 19050  CALL SETF: HOME :M = 22: GOSUB 15810: GOSUB 15010: POKE KB,0: GOTO 1200
  251. 20010  IF PC < = 0  THEN  HOME :M = 17: GOSUB 15810: GOSUB 15010: POKE KB,0: GOTO 1200
  252. 20050  POKE DS,0: ONERR  GOTO 20500
  253. 20060  HOME : PRINT D$"RUN PC"
  254. 20500  HOME :M = 18: GOSUB 15810: GOSUB 15010: ONERR  GOTO 19010
  255. 20510  POKE KB,0: GOTO 1200
  256. 21010  FOR ST = 1 TO 800:RS = ( PEEK(KS) >127): IF RS  THEN ST = 800
  257. 21020  NEXT : RETURN 
  258. 32000  POKE DS,0: PRINT D$"CLOSE"
  259. 32010  PRINT LF$"EXIT.S": CALL CS: CALL UNSC:HF$ = "EXIT.S"
  260. 32020  CALL SETF: VTAB 24: HTAB 31
  261. 32030 CL = 1: GOSUB 1810: ON (BR = 9) GOTO 1200: HOME : POKE UL,UC
  262. 32766  REM  <CTRL-N>COPYRIGHT 1983 BY THE 22ND AVENUE WORDSHOP
  263. 32767  POKE DS,0: PRINT D$"PR#6"